In order to print files including documents and figures created on a computer which is an example of an information processing apparatus through an application, drawing data is converted into printer language data using a printer driver and is then sent to a printer. Settings such as paper type, duplex printing, color printing, and paper feed tray are print settings on a user interface provided by the application or the printer driver, and data set by a user is sent to the printer as a printer command.
The number of functions of printer drivers has been increasing year by year. There are also quite a few printer drivers having several hundreds of functions. A user interface for performing print setting for a printer driver has a plurality of dialog windows that are opened by pressing a button on the user interface. This may confuse many users as to where in those windows the users are allowed to make a desired setting. Accordingly, a printer driver provides function constraint processing (conflict processing) to help users use functions. The term “function constraint processing” refers to disabling other functions when a certain function is selected or changing other setting values or functions in accordance with the selection of a certain function. In many printer drivers, for example, the simultaneous setting of “postcard” and “stapling” is unacceptable. When “postcard” is selected, the item “stapling” is made inactive or grayed out on the user interface of the printer drivers (PTL 1). Further, an item that cannot be set is hidden to prevent user selection, or an icon indicating that the item is not selectable is displayed (PTL 2). Further, a warning message about an item that cannot be set is displayed (PTL 3).
Furthermore, the constraint processing of printer drivers is performed not only using the display on a user interface but also using an application program to change print settings. In some cases, a setting that is in the constraint state may be directly passed from an application to a printer driver. In such cases, if the printer driver converts the setting into a printer command, an error occurs in the printer. Therefore, the printer driver performs function constraint processing also during printing to change a print setting to a value so that printing can be performed.
Meanwhile, due to the increased consciousness about security, reduction in cost, and the like, there is a demand to fix a specific function of print settings. For example, if the monochrome printing setting is fixed in a color printer, the cost of toner or ink required for printing can be reduced. For example, if the 2-Up printing setting for allowing two pages to be printed on one page at a reduced size or the duplex printing setting for allowing printing on both sides is fixed, the number of sheets can be reduced.
However, the function for fixing a value may often conflict with the constraint processing. For example, if the duplex printing setting is fixed, a problem may occur in that it is difficult to determine what constraint is to be applied when a sheet type that is not suitable for duplex printing is selected. In the related art, a method of customizing a printer driver itself to create a different dedicated driver has been generally adopted. This requires a printer driver to be created for each user's demand. Another possible solution is to add a new constraint processing rule from an external plug-in (PTL 4). Further possible methods include a method of attempting to fix as many settings as possible and changing a print setting when the changing of the setting can be made by the constraint processing (PTL 5). There is a technique for automatically complementing the constraint processing rule opposite to a currently held constraint processing rule.
Further, the developer can describe all rules that are active or turned on for a certain function name and can, as described above, omit a rule that is inactive or turned off. A rule that is turned off is automatically generated by an inference engine. Conversely, the developer can describe all rules that are turned off for a certain function name and can, as described above, omit a rule that is turned on. A rule that is turned on is automatically generated by the inference engine. The developer can also describe all rules that are turned on and turned off for a certain function name. In this case, no rules are automatically generated. When a term is described in the left side using the “function name (ON), function name (OFF)” form and an item is described in the right side, the same on/off form as that in the left side is used. In this case, a rule is automatically generated (PTL 6).
In the methods of the related art, however, it is difficult to perfectly fix values. When a constraint processing rule is inserted from an external plug-in, it is necessary for the external plug-in to have knowledge about all constraint processing rules (also referred to as “conflict rules”) of a printer driver in advance. Further, the functions of the main body of the printer driver may be extended and the constraint processing may also be extended. In this case, it is also necessary to insert a new, changed constraint processing rule from the external plug-in. In addition, in a case where a change may be permitted in the constraint processing, depending on the value that is fixed, all values may not necessarily be fixed with certainty. When an opposite rule is automatically complemented, the method disclosed in PTL 6 only allows automatic complement of a rule in which a setting value is turned on or off. For example, when there is a constraint processing rule for turning on the duplex printing setting, a constraint processing rule for turning off the duplex printing setting is automatically complemented. In order to avoid inconvenience of a constraint processing rule when a setting value is fixed, a rule for changing a rule to be automatically complemented to a fixed value may be added. However, if a value is changed according to a previously evaluated constraint processing rule, the value could not possibly be fixed as intended by the developer or user. Further, the above rule is not applicable to a setting having two or more setting values, for example, paper size. Another problem is that when a plurality of preset setting values that are saved by a user, such as those in “My Favorite”, are applied, if a fixed setting value and a value that is different from the fixed setting value are included in “My Favorite”, the value may be changed and it is difficult to ensure that the value can be fixed.